import mountElement from './mountElement';
import updateComponent from './updateComponent';
export default function diffComponent(
  virtualDOM,
  oldComponent,
  oldDOM,
  container
) {
  // virtualDOM，组件本身的 virtualDOM 对象
  // oldComponent，旧的组件实例对象
  // oldDOM， 旧的 DOM 对象
  // container， 父级容器
  console.log('diffComponent', virtualDOM, oldComponent, oldDOM, container);
  if (isSameComponent(virtualDOM, oldComponent)) {
    // 同一个组件，做组件更新操作
    console.log('同一个组件');
    updateComponent(virtualDOM, oldComponent, oldDOM, container);
  } else {
    // 不是同一个组件
    // oldDOM，用于组件对比时不是同一个组件时删除旧的 DOM
    mountElement(virtualDOM, container, oldDOM);
  }
}

// 判断是否是同一个组件
function isSameComponent(virtualDOM, oldComponent) {
  return oldComponent && virtualDOM.type === oldComponent.constructor;
}
